/** 
 * @date 06/05/2013
 * @author Renet_Pourriau
 * @version 1.0
 */

package mesure;

/**
 * This class represent amount conversion
 */
public class Conversion {

	private Unite uniteDepart;

	private Unite uniteFinale;

	private Double taux;

	/**
	 * this is the constructor of amount conversion
	 * @param uniteDepart
	 * @param uniteFinale
	 * @param taux
	 */
	public Conversion(Unite uniteDepart, Unite uniteFinale, Double taux) {
		this.setUniteDepart(uniteDepart);
		this.setUniteFinale(uniteFinale);
		this.setTaux(taux);
	}

	/**
	 * @return the uniteDepart
	 */
	public Unite getUniteDepart() {
		return uniteDepart;
	}

	/**
	 * @param uniteDepart
	 *            the uniteDepart to set
	 */
	public void setUniteDepart(Unite uniteDepart) {
		this.uniteDepart = uniteDepart;
	}

	/**
	 * @return the uniteFinale
	 */
	public Unite getUniteFinale() {
		return this.uniteFinale;
	}

	/**
	 * @param uniteFinale
	 *            the uniteFinale to set
	 */
	public void setUniteFinale(Unite uniteFinale) {
		this.uniteFinale = uniteFinale;
	}

	/**
	 * @return the taux
	 */
	public Double getTaux() {
		return taux;
	}

	/**
	 * @param taux
	 *            the taux to set
	 */
	public void setTaux(Double taux) {
		this.taux = taux;
	}

	/**
	 * @param quantiteDepart
	 * @return double representing amount converted
	 */
	public Double convert(Quantite quantiteDepart) {
		Double quantite = new Double(quantiteDepart.getQuantite());
		Double result = new Double(quantite * this.getTaux());
		String quantiteString = new String(quantite.toString());
		int lengthQuantite = quantiteString.length();
		String retour = String.format("%." + lengthQuantite
				+ "g%n", result);
		return Double.valueOf(retour);
	}

	/**
	 * @param quantiteDepart
	 * @return String representing the conversion
	 */
	public String convertToString(Quantite quantiteDepart) {
		Double quantite = new Double(quantiteDepart.getQuantite());
		Double result = new Double(quantite * this.getTaux());
		String quantiteString = new String(quantite.toString());
		int lengthQuantite = quantiteString.length();
		String retour = String.format("%." + lengthQuantite
				+ "g%n", result);
		return quantite + this.getUniteDepart().getDiminutif() + " est égale à "
				+ Double.valueOf(retour) + this.getUniteFinale().getDiminutif();
	}

}